﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Linq;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraGrid.Views.Grid;
namespace QuanLyKhachSan
{
    public partial class frmDonGiaPhong : DevExpress.XtraEditors.XtraForm
    {
        DataClassesKhachSanDataContext db = new DataClassesKhachSanDataContext(SystemInfo.pub_ConnString);
        bool Luu;
        bool Them;
        DialogResult result = new DialogResult();
        public frmDonGiaPhong()
        {
            InitializeComponent();
        }

        private void frmDonGiaPhong_Load(object sender, EventArgs e)
        {
            this.FillData();

            var loaiphong = from lp in db.LOAI_PHONGs select lp;
            cbLoaiPhong.DataSource = loaiphong;
            cbLoaiPhong.DisplayMember = "LP_LOAI";
            cbLoaiPhong.ValueMember = "LP_ID";

            var kichco = from kc in db.CO_PHONGs select kc;
            cbKichCo.DataSource = kichco;
            cbKichCo.DisplayMember = "CP_CO";
            cbKichCo.ValueMember = "CP_ID";


        }
        private void FillData()
        {
            var DonGia = from dg in db.DON_GIA_PHONGs  select dg;
            gridControlDonGia.DataSource = DonGia;
        }

        private void btLuu_Click(object sender, EventArgs e)
        {
            Luu = true;
            db.SubmitChanges();
        }

        private void gridViewDonGia_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
        {
              if (e.Column.FieldName == "")
	        {
              if (e.RowHandle >= 0)
               {
                   e.DisplayText =  (e.RowHandle + 1).ToString ();
               }
	        } 
        }

        private void gridViewDonGia_RowUpdated(object sender, DevExpress.XtraGrid.Views.Base.RowObjectEventArgs e)
        {
            Luu = false;
        }

        private void frmDonGiaPhong_FormClosing(object sender, FormClosingEventArgs e)
        {
             
            if (Luu == false )
            {
               result = XtraMessageBox.Show("Dữ liệu chưa được lưu! Bạn có muốn lưu không?", "Đơn Giá", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
            try 
	            {	        
	        	  if ( result == DialogResult.Yes)
                {
                    db.SubmitChanges();
                }
                else if (result == DialogResult .Cancel )
                {
                    e.Cancel = true ;
                }
	        }
          	catch (Exception)
	        {
		
	        	throw;
	        }
            }
        }

        private void gridViewDonGia_ValidateRow(object sender, ValidateRowEventArgs e)
        {
            ColumnView view = sender as ColumnView;
            GridColumn column1 = view.Columns["LP_LOAI"];
            GridColumn column2 = view.Columns["CP_CO"];
            String loai = (String)view.GetRowCellValue(e.RowHandle, column1);
            String co = (String)view.GetRowCellValue(e.RowHandle, column2);
            int a = view.FocusedRowHandle;
            if (loai == null || co == null)
            {
                if (loai == null)
                {
                    e.Valid = false;
                    view.SetColumnError(column1, "Vui lòng chọn loại phòng.");
                }
                if (co == null)
                {
                    e.Valid = false;
                    view.SetColumnError(column2, "Vui lòng chọn kích cỡ phòng.");
                }
            }
            else
            {
                string ID = loai + co;
                for (int i = 0; i < gridViewDonGia.RowCount ; i++)
                {
                    string test = view.GetRowCellValue(i, column1).ToString() + view.GetRowCellValue(i, column2).ToString();
                    if (ID == test && i != a)
                    {
                        e.Valid = false;
                        view.SetColumnError(column1, "Loại phòng và Cỡ phòng đã tồn tại.");
                        view.SetColumnError(column2, "Loại phòng và Cỡ phòng đã tồn tại.");
                       
                    }
                }
            }
        }

        private void gridViewDonGia_InvalidRowException(object sender, InvalidRowExceptionEventArgs e)
        {
            //Suppress displaying the error message box
            e.ExceptionMode = ExceptionMode.NoAction;
        }

        private void gridViewDonGia_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
        {  
            Them = true;
        }

        private void gridViewDonGia_ValidatingEditor(object sender, BaseContainerValidateEditorEventArgs e)
        {
            GridView view = sender as GridView;
            if (view.FocusedColumn.FieldName == "LP_LOAI")
            {
                if (Them == false )
                {
                     e.Valid = false;
                     view.SetColumnError(gridColumn2, "Bạn không thể chỉnh sửa loại phòng");
                }
            }
            if (view.FocusedColumn.FieldName == "CP_CO")
            {
                if (Them == false)
                {
                    e.Valid = false;
                    view.SetColumnError(gridColumn3, "Bạn không thể chỉnh sửa cỡ phòng");
                }
            }
        }

        private void gridViewDonGia_InvalidValueException(object sender, InvalidValueExceptionEventArgs e)
        {
            //Do not perform any default action 
            e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.NoAction;
            //Show the message with the error text specified 
           // MessageBox.Show(e.ErrorText);
        }

        private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Luu = true;
            db.SubmitChanges();
        }

        private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (gridViewDonGia.RowCount == 0)
            {
                XtraMessageBox.Show("Không có dữ liệu để xóa.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                result = XtraMessageBox.Show("Bạn có chắc muốn xóa?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
                if (result == DialogResult.Yes)
                {
                    int rowHandles = gridViewDonGia.FocusedRowHandle;
                    try
                    {
                       
                            gridViewDonGia.DeleteRow(rowHandles);
                            Luu  = false;
                            if (this.Text.Substring(this.Text.Length - 1, 1) != "*")
                            {
                                this.Text = this.Text + "*";
                            }   
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                }
            }
        }
    }
 }
